package com.ben.multiple.util;

/**
 * String 工具类
 *
 * @author BenJin Yin
 * @date 2019/10/24
 */
public final class MyStringUtils {
    private MyStringUtils(){}
    /**
     * 特殊字符、空白字符、手机号    正则表达式
     */
    private static final String SPECIAL_CHAR_REGEX = "(：)?(:)?(/)?(-)?";
    private static final String BLANK_CHAR_REGEX = "(\\s)?(\\r)?(\\n)?";
    private static final String PHONE_REGEX = "1\\d{10}";

    /**
     * 移除特殊字符
     *
     * @param str String
     * @return String
     */
    public static String removeSpecialChar(String str) {
        return str == null ? null : str.replaceAll(SPECIAL_CHAR_REGEX, "");
    }

    /**
     * 移除空白字符
     *
     * @param str String
     * @return String
     */
    public static String removeBlankChar(String str) {
        return str == null ? null : str.trim().replaceAll(BLANK_CHAR_REGEX, "");
    }

    /**
     * 移除特殊字符 和 空白字符
     *
     * @param str String
     * @return String
     */
    public static String removeBlankAndSpecialChar(String str) {
        return str == null ? null : str.trim().replaceAll(SPECIAL_CHAR_REGEX + BLANK_CHAR_REGEX, "");
    }

    /**
     * 判断字符是否是空白字符
     *
     * @param cs CharSequence
     * @return boolean
     */
    public static boolean isBlank(CharSequence cs) {
        int strLen = cs == null ? 0 : cs.length();
        if (strLen == 0) {
            return true;
        }
        for (int i = 0; i < strLen; i++) {
            if (!Character.isWhitespace(cs.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    public static boolean isNotBlank(CharSequence cs) {
        return !isBlank(cs);
    }

    /**
     * 判断字符是否是空字符
     *
     * @param cs String
     * @return boolean
     */
    public static boolean isEmpty(String cs) {
        return cs == null || "".equals(cs);
    }

    public static boolean isNotEmpty(String cs) {
        return !isEmpty(cs);
    }

    /**
     * 手机号校验
     *
     * @param phone String
     * @return boolean
     */
    public static boolean isPhone(String phone) {
        return !isBlank(phone) && phone.matches(PHONE_REGEX);
    }

}
